package com.cake.liulanxiangzhu.service;

import com.cake.liulanxiangzhu.pojo.dto.CartDTO;
import com.cake.liulanxiangzhu.pojo.dto.OmsOrderSearchDTO;
import com.cake.liulanxiangzhu.pojo.entity.OmsOrder;
import com.cake.liulanxiangzhu.pojo.entity.Pay;
import com.cake.liulanxiangzhu.pojo.vo.OmsOrderStateVO;
import com.cake.liulanxiangzhu.pojo.vo.OmsOrderVO;
import com.cake.liulanxiangzhu.web.JsonPage;

import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.util.List;

/**
 * 订单信息表(OmsOrder)表服务接口
 *
 * @author dinghao
 * @since 2023-02-23 14:54:20
 */
public interface OmsOrderService {

    /**
     * 通过ID查询单条数据
     *
     * @param orderId 主键
     * @return 实例对象
     */
    OmsOrderVO queryById(String orderId);

    /**
     * 分页查询
     *
     * @param request
     * @param omsOrder 筛选条件
     * @return 查询结果
     */
    JsonPage<OmsOrderVO> queryByPage(HttpServletRequest request, OmsOrder omsOrder,Integer page , Integer pageSize);
    /**
     * 新增数据
     *
     * @param request
     * @param cartDTO
     * @return 实例对象
     */
    Pay insert(HttpServletRequest request, CartDTO cartDTO);


    void insertBatch(List<OmsOrder> entities);

    Integer insertCartBatch(HttpServletRequest request, CartDTO cartDTO) throws ParseException;

    /**
     * 修改数据
     *
     * @param id
     * @param gmtAppointment
     * @param orderId        实例对象
     * @return 实例对象
     */
    void update(Integer id, String gmtAppointment, Integer orderId );

    /**
     * 通过主键删除数据
     *
     * @param orderId 主键
     * @return 是否成功
     */
    void deleteById(String orderId);

    /**
     * 查询所有订单数据
     *
     * @return 列表
     */
    JsonPage<OmsOrderVO> queryAllOrder(OmsOrderSearchDTO omsOrderSearchDTO);

    /**
     * 查询所有订单数据-不分页
     *
     * @return 列表
     */
    List<OmsOrderVO> queryAllOrderExport();

    /**
     * 后台管理修改订单状态
     *
     * @param orderId 主键
     * @return 是否成功
     */
    void updateState( Integer orderId, Integer state );

    /**
     * 后台批量删除订单
     *
     * @param orderIds 主键
     * @return 是否成功
     */
    void deleteOrderIds(List<Integer> orderIds);

    /**
     * 后台订单状态下拉选
     *
     * @return 是否成功
     */
    List<OmsOrderStateVO> stateVos();



}
